package com.cskaoyan.javase.object._0introduction;
/**
 * API的概述
 * API，全称Application Programming Interface，也就是应用程序编程接口。
 * 这个接口，我们在接口那一章节中，已经说过了。
 * 此接口并不是Java语法中的interface，而是指一些已经预先定义好的，暴露给外界使用的方法或者工具。
 *
 * API的学习，其实主要就是学习方法的调用，本质上非常简单。
 * 到这里，我们面向对象当中，繁杂的概念还写不出几行代码的窘境就会差不多结束了。学习一些API后，我们就可以写出一些代码了。
 *
 * API的作用是：开发者可以在不关注具体实现细节的前提下，使用这些已经预先定义好的类和工具实现自己的需求。
 * 像官方JDK中的API
 * 我们可以通过官方JDK文档去学习，或者百度搜索一下去学习。
 * 而以后公司，程序员之间互相交流接口，就需要依赖于公司的API文档。
 * 所以写文档，也是程序员的必备技能。
 *
 * Object类概述
 * Object类，虽然我们没有详细了解，但我们知道了：
 * Object类是所有类继承层次的祖先类，Java中所有类（包括数组）都直接或者间接的继承自该类，都实现了该类的方法。
 *
 * 自定义类时，我们并不需要特别的标注extends Object，这是一个隐式的继承。
 * 如果一个类没有明确的指出它的父类，Object类就默认是这个类的父类，extends Object则已经隐含了，不需要写出来。
 *
 * Object是没有成员变量定义的，并且由于子类对象的隐式初始化，Object类有且仅有一个默认提供的无参构造方法。
 * 所以我们学习Object类，主要关注它的成员方法。
 *
 * Object类的成员方法:
 *      1.public final Class getClass()
 *          作用是返回Class对象
 *          这里最重要的就是了解什么是Class对象
 *          该方法本身没有太大意义,实际开发中很少使用.
 *
 *      2.public String toString()
 *          把对象变成一个字符串,就是使用一个字符串来描述一个对象
 *          一般来说,该方法打印对象的属性取值.
 *
 *      3.public boolean equals(Object obj)
 *      4.public int hashCode()
 *      以上两个方法,稍微难一点,也比较常用,作为重点学习.
 *
 *      5.protected void finalize()
 *          这个方法没有用,仅做了解.
 *          在Java9及其以后,Java官方,将该方法使用注解"@Deprecated"标记了它
 *          表示这个方法已经被放弃使用了,建议程序员不要再使用.
 *
 *     6.protected Object clone()
 *          克隆,克隆对象
 *          该方法细节比较多,但实际使用很少
 *          它是一个很特殊的存在, 因为该方法是一种独立的创建对象的方式.
 *
 *
 * @since 10:00
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        // 调用已弃用方法
        test();
    }
    @Deprecated
    public static void test(){}
}
